package com.beyond.pm.ui.login

import com.beyond.pm.api.MyApiResult
import com.beyond.pm.bean.net.ReqLogin
import com.beyond.pm.bean.net.RespLogin
import com.jung.net.BaseResponse
import com.jung.net.ServiceCreators
import retrofit2.http.Body
import retrofit2.http.POST

interface LoginService {
    @POST("login")
    suspend fun postLogin(@Body body: ReqLogin): BaseResponse<RespLogin?>
}

interface LoginRepository {
    suspend fun postLogin(body: ReqLogin):RespLogin?
}

class LoginRepositoryImpl(private val service: LoginService) : LoginRepository {
    override suspend fun postLogin(body: ReqLogin): RespLogin? {
        return MyApiResult.create {
            service.postLogin(body)
        }
    }
}

val loginRepository by lazy {
    LoginRepositoryImpl(
        ServiceCreators.provide(
            LoginService::class.java,
            null
        )
    )
}

//class LoginRepositoryImpl  : LoginRepository() {
//    suspend fun checkUpdate(): Flow<BaseData<UpdateBean>> {
//        return flow {
//            emitBaseData(BaseData<UpdateBean>().apply {
//                code = 0
//                data = retrofit.create(UpdateService::class.java).checkUpdate()
//            })
//        }
//    }
//}

//
///**
// * 使用 hilt 其他地址使用还需要初始化 使用对象 代码量增加 可读性还差
// */
//@InstallIn(SingletonComponent::class)
//@Module
//class NetModule {
//    @Singleton
//    @Provides
//    fun provideLoginService(): LoginService {
//        return ServiceCreators.provide(LoginService::class.java, null)
//    }
//
//    @Singleton
//    @Provides
//    fun provideLoginRepository(service: LoginService): LoginRepository {
//        return LoginRepositoryImpl(service)
//    }
//}
